home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / DatabaseAccess.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  11.6 KB  |  301 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        DatabaseAccess.mod
  3.  
  4.      Contains:    Database Access Manager Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Package:    Universal Interfaces 2.0 in “MPW Latest” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE DatabaseAccess;
  23.  
  24. IMPORT SYSTEM, Types;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. CONST
  31.     typeNone*                    = LONG("none");
  32.     typeDate*                    = LONG("date");
  33.     typeTime*                    = LONG("time");
  34.     typeTimeStamp*                = LONG("tims");
  35.     typeDecimal*                    = LONG("deci");
  36.     typeMoney*                    = LONG("mone");
  37.     typeVChar*                    = LONG("vcha");
  38.     typeVBin*                    = LONG("vbin");
  39.     typeLChar*                    = LONG("lcha");
  40.     typeLBin*                    = LONG("lbin");
  41.     typeDiscard*                    = LONG("disc");
  42. (* "dummy" types for DBResultsToText *)
  43.     typeUnknown*                    = LONG("unkn");
  44.     typeColBreak*                = LONG("colb");
  45.     typeRowBreak*                = LONG("rowb");
  46. (* pass this in to DBGetItem for any data type *)
  47.     typeAnyType*                    = 0;
  48.  
  49. (* infinite timeout value for DBGetItem *)
  50. (* messages for status functions for DBStartQuery *)
  51.     kDBUpdateWind*                = 0;
  52.     kDBAboutToInit*                = 1;
  53.     kDBInitComplete*                = 2;
  54.     kDBSendComplete*                = 3;
  55.     kDBExecComplete*                = 4;
  56.     kDBStartQueryComplete*        = 5;
  57.  
  58. (* messages for status functions for DBGetQueryResults *)
  59.     kDBGetItemComplete*            = 6;
  60.     kDBGetQueryResultsComplete*    = 7;
  61.     kDBWaitForever*                = -1;
  62. (*  flags for DBGetItem  *)
  63.     kDBLastColFlag*                = $0001;
  64.     kDBNullFlag*                    = $0004;
  65.  
  66.     
  67. TYPE
  68.     DBType* = Types.OSType;
  69.  
  70.     DBAsyncParmBlkPtr* = POINTER TO DBAsyncParamBlockRec;
  71.  
  72.     (*
  73.         DBCompletionProcPtr uses register based parameters on the 68k and cannot
  74.         be written in or called from a high-level language without the help of
  75.         mixed mode or assembly glue.
  76.  
  77.         In*:
  78.          => pb              A1.L
  79.     *)
  80.     DBCompletionProcPtr* = Types.Register68kProcPtr;  (* register PROCEDURE DBCompletion*(pb: DBAsyncParmBlkPtr); *)
  81.     DBCompletionUPP* = Types.UniversalProcPtr;
  82.  
  83.     DBAsyncParamBlockRec* = RECORD
  84.         completionProc*:            DBCompletionUPP;                        (* pointer to completion routine *)
  85.         result*:                    Types.OSErr;                                    (* result of call *)
  86.         userRef*:                LONGINT;                                (* for application's use *)
  87.         ddevRef*:                LONGINT;                                (* for ddev's use *)
  88.         reserved*:                LONGINT;                                (* for internal use *)
  89.     END;
  90.  
  91. CONST
  92.     uppDBCompletionProcInfo* = $0000B802; (* Register PROCEDURE (4 bytes in A1); *)
  93.  
  94. PROCEDURE CallDBCompletionProc*(pb: DBAsyncParmBlkPtr; userRoutine: DBCompletionUPP);
  95.     (*$IF NOT GENERATINGCFM*)
  96.     INLINE PASCAL ; (*••*)
  97.     (*To be implemented*:  Glue to move parameters into registers.*)
  98.     (*$END*)
  99.  
  100. PROCEDURE NewDBCompletionProc*(userRoutine: DBCompletionProcPtr): DBCompletionUPP;
  101.     (*$IF NOT GENERATINGCFM *)
  102.     INLINE PASCAL $2E9F;
  103.     (*$END*)
  104.  
  105. TYPE
  106.     ResListElem* = RECORD
  107.         theType*:                Types.ResType;                                (* resource type *)
  108.         id*:                        INTEGER;                                (* resource id *)
  109.     END;
  110.  
  111.     ResListPtr* = POINTER TO ResListElem;
  112.     ResListHandle* = HANDLE TO ResListElem (*ΔΔ POINTER TO ResListPtr*);
  113.  
  114. (* structure for query list in QueryRecord *)
  115.     QueryArray* = ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF Types.Handle;
  116.  
  117.     QueryListPtr* = POINTER TO QueryArray;
  118.     QueryListHandle* = HANDLE TO QueryArray(*ΔΔ POINTER TO QueryListPtr*);
  119.  
  120.     QueryRecord* = RECORD
  121.         version*:                INTEGER;                                (* version *)
  122.         id*:                        INTEGER;                                (* id of LONG("qrsc") this came from *)
  123.         queryProc*:                Types.Handle;                                    (* handle to query def proc *)
  124.         ddevName*:                Types.Str63;                                    (* ddev name *)
  125.         host*:                    Types.Str255;                                    (* host name *)
  126.         user*:                    Types.Str255;                                    (* user name *)
  127.         password*:                Types.Str255;                                    (* password *)
  128.         connStr*:                Types.Str255;                                    (* connection string *)
  129.         currQuery*:                INTEGER;                                (* index of current query *)
  130.         numQueries*:                INTEGER;                                (* number of queries in list *)
  131.         queryList*:                QueryListHandle;                        (* handle to array of handles to text *)
  132.         numRes*:                    INTEGER;                                (* number of resources in list *)
  133.         resList*:                ResListHandle;                            (* handle to array of resource list elements *)
  134.         dataHandle*:                Types.Handle;                                    (* for use by query def proc *)
  135.         refCon*:                    LONGINT;                                (* for use by application *)
  136.     END;
  137.  
  138.     QueryPtr* = POINTER TO QueryRecord;
  139.     QueryHandle* = HANDLE TO QueryRecord (*ΔΔ POINTER TO QueryPtr*);
  140.  
  141. (* structure of column types array in ResultsRecord *)
  142.     ColTypesArray* = ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF DBType;
  143.  
  144.     ColTypesPtr* = POINTER TO ColTypesArray;
  145.     ColTypesHandle* = HANDLE TO ColTypesArray (*ΔΔ POINTER TO ColTypesPtr*);
  146.  
  147.     DBColInfoRecord* = RECORD
  148.         len*:                    INTEGER;
  149.         places*:                    INTEGER;
  150.         flags*:                    INTEGER;
  151.     END;
  152.  
  153.     ColInfoArray* = ARRAY 256 (*ΔΔ[0..255]ΔΔ*) OF DBColInfoRecord;
  154.  
  155.     ColInfoPtr* = POINTER TO ColInfoArray;
  156.     ColInfoHandle* = HANDLE TO ColInfoArray (*ΔΔ POINTER TO ColInfoPtr*);
  157.  
  158.     ResultsRecord* = RECORD
  159.         numRows*:                INTEGER;                                (* number of rows in result *)
  160.         numCols*:                INTEGER;                                (* number of columns per row *)
  161.         colTypes*:                ColTypesHandle;                            (* data type array *)
  162.         colData*:                Types.Handle;                                    (* actual results *)
  163.         colInfo*:                ColInfoHandle;                            (* DBColInfoRecord array *)
  164.     END;
  165.  
  166.     DBQueryDefProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (VAR sessID: LONGINT; query: QueryHandle): Types.OSErr;
  167.     DBStatusProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (message: INTEGER; result: Types.OSErr; dataLen: INTEGER; dataPlaces: INTEGER; dataFlags: INTEGER; dataType: DBType; dataPtr: Types.Ptr): BOOLEAN;
  168.     DBResultHandlerProcPtr* = (*ΔΔ Types.ProcPtr;*) PROCEDURE (dataType: DBType; theLen: INTEGER; thePlaces: INTEGER; theFlags: INTEGER; theData: Types.Ptr; theText: Types.Handle): Types.OSErr;
  169.     DBQueryDefUPP* = Types.UniversalProcPtr;
  170.     DBStatusUPP* = Types.UniversalProcPtr;
  171.     DBResultHandlerUPP* = Types.UniversalProcPtr;
  172.  
  173. CONST
  174.     uppDBQueryDefProcInfo* = $000003E0; (* PROCEDURE (4 byte param, 4 byte param): 2 byte result; *)
  175.     uppDBStatusProcInfo* = $000FAA90; (* PROCEDURE (2 byte param, 2 byte param, 2 byte param, 2 byte param, 2 byte param, 4 byte param, 4 byte param): 1 byte result; *)
  176.     uppDBResultHandlerProcInfo* = $0003EAE0; (* PROCEDURE (4 byte param, 2 byte param, 2 byte param, 2 byte param, 4 byte param, 4 byte param): 2 byte result; *)
  177.  
  178. PROCEDURE NewDBQueryDefProc*(userRoutine: DBQueryDefProcPtr): DBQueryDefUPP;
  179.     (*$IF NOT GENERATINGCFM *)
  180.     INLINE PASCAL $2E9F;
  181.     (*$END*)
  182.  
  183. PROCEDURE NewDBStatusProc*(userRoutine: DBStatusProcPtr): DBStatusUPP;
  184.     (*$IF NOT GENERATINGCFM *)
  185.     INLINE PASCAL $2E9F;
  186.     (*$END*)
  187.  
  188. PROCEDURE NewDBResultHandlerProc*(userRoutine: DBResultHandlerProcPtr): DBResultHandlerUPP;
  189.     (*$IF NOT GENERATINGCFM *)
  190.     INLINE PASCAL $2E9F;
  191.     (*$END*)
  192.  
  193. PROCEDURE CallDBQueryDefProc*(VAR sessID: LONGINT; query: QueryHandle; userRoutine: DBQueryDefUPP): Types.OSErr;
  194.     (*$IF NOT GENERATINGCFM*)
  195.     INLINE PASCAL $205F, $4E90;
  196.     (*$END*)
  197.  
  198. PROCEDURE CallDBStatusProc*(message: INTEGER; result: Types.OSErr; dataLen: INTEGER; dataPlaces: INTEGER; dataFlags: INTEGER; dataType: DBType; dataPtr: Types.Ptr; userRoutine: DBStatusUPP): BOOLEAN;
  199.     (*$IF NOT GENERATINGCFM*)
  200.     INLINE PASCAL $205F, $4E90;
  201.     (*$END*)
  202.  
  203. PROCEDURE CallDBResultHandlerProc*(dataType: DBType; theLen: INTEGER; thePlaces: INTEGER; theFlags: INTEGER; theData: Types.Ptr; theText: Types.Handle; userRoutine: DBResultHandlerUPP): Types.OSErr;
  204.     (*$IF NOT GENERATINGCFM*)
  205.     INLINE PASCAL $205F, $4E90;
  206.     (*$END*)
  207.  
  208. PROCEDURE InitDBPack*(): Types.OSErr;
  209.     (*$IF NOT GENERATINGCFM*)
  210.     INLINE PASCAL $3F3C, $0004, $303C, $0100, $A82F;
  211.     (*$END*)
  212. PROCEDURE DBInit*(VAR sessID: LONGINT; ddevName: Types.ConstStr63Param; host: Types.ConstStr255Param; user: Types.ConstStr255Param; passwd: Types.ConstStr255Param; connStr: Types.ConstStr255Param; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  213.     (*$IF NOT GENERATINGCFM*)
  214.     INLINE PASCAL $303C, $0E02, $A82F;
  215.     (*$END*)
  216. PROCEDURE DBEnd*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  217.     (*$IF NOT GENERATINGCFM*)
  218.     INLINE PASCAL $303C, $0403, $A82F;
  219.     (*$END*)
  220. PROCEDURE DBGetConnInfo*(sessID: LONGINT; sessNum: INTEGER; VAR returnedID: LONGINT; VAR version: LONGINT; VAR ddevName: Types.Str63; VAR host: Types.Str255; VAR user: Types.Str255; VAR network: Types.Str255; VAR connStr: Types.Str255; VAR start: LONGINT; VAR state: Types.OSErr; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  221.     (*$IF NOT GENERATINGCFM*)
  222.     INLINE PASCAL $303C, $1704, $A82F;
  223.     (*$END*)
  224. PROCEDURE DBGetSessionNum*(sessID: LONGINT; VAR sessNum: INTEGER; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  225.     (*$IF NOT GENERATINGCFM*)
  226.     INLINE PASCAL $303C, $0605, $A82F;
  227.     (*$END*)
  228. PROCEDURE DBSend*(sessID: LONGINT; text: Types.Ptr; len: INTEGER; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  229.     (*$IF NOT GENERATINGCFM*)
  230.     INLINE PASCAL $303C, $0706, $A82F;
  231.     (*$END*)
  232. PROCEDURE DBSendItem*(sessID: LONGINT; dataType: DBType; len: INTEGER; places: INTEGER; flags: INTEGER; buffer: (*ΔΔUNIVΔΔ*) Types.Ptr; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  233.     (*$IF NOT GENERATINGCFM*)
  234.     INLINE PASCAL $303C, $0B07, $A82F;
  235.     (*$END*)
  236. PROCEDURE DBExec*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  237.     (*$IF NOT GENERATINGCFM*)
  238.     INLINE PASCAL $303C, $0408, $A82F;
  239.     (*$END*)
  240. PROCEDURE DBState*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  241.     (*$IF NOT GENERATINGCFM*)
  242.     INLINE PASCAL $303C, $0409, $A82F;
  243.     (*$END*)
  244. PROCEDURE DBGetErr*(sessID: LONGINT; VAR err1: LONGINT; VAR err2: LONGINT; VAR item1: Types.Str255; VAR item2: Types.Str255; VAR errorMsg: Types.Str255; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  245.     (*$IF NOT GENERATINGCFM*)
  246.     INLINE PASCAL $303C, $0E0A, $A82F;
  247.     (*$END*)
  248. PROCEDURE DBBreak*(sessID: LONGINT; abort: BOOLEAN; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  249.     (*$IF NOT GENERATINGCFM*)
  250.     INLINE PASCAL $303C, $050B, $A82F;
  251.     (*$END*)
  252. PROCEDURE DBGetItem*(sessID: LONGINT; timeout: LONGINT; VAR dataType: DBType; VAR len: INTEGER; VAR places: INTEGER; VAR flags: INTEGER; buffer: (*ΔΔUNIVΔΔ*) Types.Ptr; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  253.     (*$IF NOT GENERATINGCFM*)
  254.     INLINE PASCAL $303C, $100C, $A82F;
  255.     (*$END*)
  256. PROCEDURE DBUnGetItem*(sessID: LONGINT; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  257.     (*$IF NOT GENERATINGCFM*)
  258.     INLINE PASCAL $303C, $040D, $A82F;
  259.     (*$END*)
  260. PROCEDURE DBKill*(asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  261.     (*$IF NOT GENERATINGCFM*)
  262.     INLINE PASCAL $303C, $020E, $A82F;
  263.     (*$END*)
  264. PROCEDURE DBGetNewQuery*(queryID: INTEGER; VAR query: QueryHandle): Types.OSErr;
  265.     (*$IF NOT GENERATINGCFM*)
  266.     INLINE PASCAL $303C, $030F, $A82F;
  267.     (*$END*)
  268. PROCEDURE DBDisposeQuery*(query: QueryHandle): Types.OSErr;
  269.     (*$IF NOT GENERATINGCFM*)
  270.     INLINE PASCAL $303C, $0210, $A82F;
  271.     (*$END*)
  272. PROCEDURE DBStartQuery*(VAR sessID: LONGINT; query: QueryHandle; statusProc: DBStatusUPP; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  273.     (*$IF NOT GENERATINGCFM*)
  274.     INLINE PASCAL $303C, $0811, $A82F;
  275.     (*$END*)
  276. PROCEDURE DBGetQueryResults*(sessID: LONGINT; VAR results: ResultsRecord; timeout: LONGINT; statusProc: DBStatusUPP; asyncPB: DBAsyncParmBlkPtr): Types.OSErr;
  277.     (*$IF NOT GENERATINGCFM*)
  278.     INLINE PASCAL $303C, $0A12, $A82F;
  279.     (*$END*)
  280. PROCEDURE DBResultsToText*(VAR results: ResultsRecord; VAR theText: Types.Handle): Types.OSErr;
  281.     (*$IF NOT GENERATINGCFM*)
  282.     INLINE PASCAL $303C, $0413, $A82F;
  283.     (*$END*)
  284. PROCEDURE DBInstallResultHandler*(dataType: DBType; theHandler: DBResultHandlerUPP; isSysHandler: BOOLEAN): Types.OSErr;
  285.     (*$IF NOT GENERATINGCFM*)
  286.     INLINE PASCAL $303C, $0514, $A82F;
  287.     (*$END*)
  288. PROCEDURE DBRemoveResultHandler*(dataType: DBType): Types.OSErr;
  289.     (*$IF NOT GENERATINGCFM*)
  290.     INLINE PASCAL $303C, $0215, $A82F;
  291.     (*$END*)
  292. PROCEDURE DBGetResultHandler*(dataType: DBType; VAR theHandler: DBResultHandlerUPP; getSysHandler: BOOLEAN): Types.OSErr;
  293.     (*$IF NOT GENERATINGCFM*)
  294.     INLINE PASCAL $303C, $0516, $A82F;
  295.     (*$END*)
  296.  
  297. (* $ALIGN RESET*)
  298. (* $POP*)
  299.  
  300.  END DatabaseAccess.
  301.